// "use strict";
// var x = 1;
// console.log(x);
// console.log(typeof x);
// // 这里显示了弱类型
// // 这种使用方式，虽然合法但不推荐
// x = '111';
// console.log(x);
// console.log(typeof x);

// let y = 1;

// // m = 10;
// // console.log(m);
// // var m = 10;


// console.log(x);

// var x = 10;


// function foo() {
//     x = 1;
// }

// foo();
// console.log(x);

// function foo() {
//     var a = 1;        
//     function b() {   
//        a = 10;
//        return '';
//        function a() {}
//      }
//      b();
//      console.log(a);         // ?
//  }
//  foo();

 
// var x = 4;
// var y = 5;

// function foo() {
//     var x = 7;
//     var y = 2;
//     console.log(x);
//     console.log(y);
// }

// function foo1() {
//     var y = 2;
//     foo();
//     console.log(x);
//     console.log(y);
//     var x = 7; // 变量提升
// }

// function foo2() {
//     foo1();
//     console.log(x);
//     console.log(y);
// }

// foo2();



console.log(foo);
foo(); 
function foo() {
  console.log('foo');
}

console.log(foo);
foo(); 
var foo = function() {  // (*) no magic any more
  console.log('foo');
};


// function foo() {
//     let z = 1;
//     var name = 'foo';
//     console.log(name);
//     console.log(type);
//     console.log(y);
//     var type = 'function';
//     {
//         let z = 2;
//         y = 1;
//         {
//             let z = 11;
//             let zz = 12;
//             console.log(x);
//             console.log(z);
//         }

//     }

    
//     function foo2() {
//         var x = 1;
//         var y = 2;
//         function foo3() {
//             var x = 4;
//             console.log(x);
//             console.log(y);
//         }
//         foo3();
//     }

//     foo2();

// }




foo();